#include <stdio.h>
#include <stdlib.h>
#include "list.h"
#include "car_list.h"

list_t *g_list;
car_list_t *g_car_list;

//typedef struct NODE
//{
//    int id;
//    int state;
//}Node;


int main(int argc, char **argv)
{
//    Node * node = (Node *)malloc(sizeof(Node));
//    node->id = 1;
//    node->state = 1;
    
    
//    g_list = (list_t *)malloc(sizeof(list_t));
//    list_init(g_list);
//    int data = 1;
//    list_append(g_list, &data);
//    
//    int data2 = 2;
//    list_append(g_list, &data2);
//    
//    int data3 = 3;
//    list_append(g_list, &data3);
//    
//    printf("\r\nlist_len: %d\r\n", list_len(g_list));
//    int len = list_len(g_list);
//    
//    int *ret = malloc(sizeof(int));
//    for(int i = 0; i<len; i++)
//    {
//        list_get(g_list, i, &ret);
//        printf("\r\nIndex:%d, data:%d\r\n",i, *ret);
//    }

    uint8_t clen = 7;
    uint8_t cdat[9] = "cBSB110";
    uint32_t ct = 1234;
    
    CAR_Unit *car1 = create_new_car_unit(ct, clen, cdat);
    cdat[6] = '1';
    ct += 1;
    CAR_Unit *car2 = create_new_car_unit(ct, 7, cdat);
    cdat[6] = '2';
    ct += 1;
    CAR_Unit *car3 = create_new_car_unit(ct, 7, cdat);
           
    g_car_list = (car_list_t *)malloc(sizeof(car_list_t));
    car_list_init(g_car_list);
    car_list_append(g_car_list, car1);
    car_list_append(g_car_list, car2);
    car_list_append(g_car_list, car3);
    
    free(car1);
    free(car2);
    free(car3);
    
    printf("\r\ncar_list_len: %d\r\n", car_list_len(g_car_list));
    int len = car_list_len(g_car_list);
    
    int *ret = malloc(sizeof(CAR_Unit));
    CAR_Unit *p = NULL;
    for(int i = 0; i<len; i++)
    {
        car_list_get(g_car_list, i, &ret);
        p = (CAR_Unit *)ret;
        printf("\r\nIndex:%d, dead_time:%d, car:%s\r\n",i, p->dead_time, p->car_num);
    }
    
//    car_list_pop_tail(g_car_list);
//    len = car_list_len(g_car_list);
//    
//    p = NULL;
//    for(int i = 0; i<len; i++)
//    {
//        car_list_get(g_car_list, i, &ret);
//        p = (CAR_Unit *)ret;
//        printf("\r\nIndex:%d, dead_time:%d, car:%s\r\n",i, p->dead_time, p->car_num);
//    }
    
//     car_list_pop(g_car_list, 1);
//    len = car_list_len(g_car_list);
//    
//    p = NULL;
//    for(int i = 0; i<len; i++)
//    {
//        car_list_get(g_car_list, i, &ret);
//        p = (CAR_Unit *)ret;
//        printf("\r\nIndex:%d, dead_time:%d, car:%s\r\n",i, p->dead_time, p->car_num);
//    }

    uint8_t tt[9] = "cBSB110";
    uint32_t ttime = 1243;
    int q = car_list_compare(g_car_list, tt, ttime);
    printf("\r\ncar_list_compare ret:%d\r\n", q);
    len = car_list_len(g_car_list);
    
    p = NULL;
    for(int i = 0; i<len; i++)
    {
        car_list_get(g_car_list, i, &ret);
        p = (CAR_Unit *)ret;
        printf("\r\nIndex:%d, dead_time:%d, car:%s\r\n",i, p->dead_time, p->car_num);
    }    
    
    destroy_car_list(g_car_list);
    len = car_list_len(g_car_list);
    printf("\r\nlist_len:%d\r\n", len);
    
	printf("\r\nhello world\n");
    
	return 0;
}

